package com.weixin.api;

import com.weixin.api.request.WxMessageRequest;
import com.weixin.config.WxConfig;
import com.weixin.core.TokenFactory;
import com.weixin.core.WxActuator;
import com.weixin.interfaces.WeixinCallback;
import com.weixin.pojo.message.kf.KfMessage;
import com.weixin.pojo.message.template.MessageTemplate;
import com.weixin.utils.WxJson;

/**
 * 类描述：微信模板消息<br>
 * 创建人：邓强   <br>
 * 创建时间：2017年11月3日 下午6:38:39    <br> 
 * 修改人：  <br>
 * 修改时间：2017年11月3日 下午6:38:39   <br>  
 * 修改备注：     <br>
 * @version   V1.0
 */
public class WxMessage {
	
	/**
	 * 发送消息<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 上午11:22:52    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 上午11:22:52   <br>  
	 * 修改备注：     <br> 
	 * @param kfmsg
	 * @return
	 */
	public static String send(KfMessage kfmsg){
		WxConfig wxConfig = TokenFactory.getDefaultWxConfigs();
		return send(wxConfig, kfmsg);
	}
	
	/**
	 * 发送消息<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 上午11:23:03    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 上午11:23:03   <br>  
	 * 修改备注：     <br> 
	 * @param wxConfig
	 * @param kfmsg
	 * @return
	 */
	public static String send(WxConfig wxConfig, KfMessage kfmsg){
		final String body=WxJson.toJson(kfmsg);
		
		String resStr = WxActuator.execute(wxConfig, new WeixinCallback() {
			@Override
			public String callback(WxConfig wxConfig) {
				return WxMessageRequest.send(wxConfig, body);
			}
		});

		return resStr;
	}
	
	/**
	 * 发送模板消息<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:24:19    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:24:19   <br>  
	 * 修改备注：     <br> 
	 * @param message
	 * @return
	 */
	public static String sendTemplate(MessageTemplate message){
		return sendTemplate(TokenFactory.getDefaultWxConfigs(), message);
	}
	
	public static String sendTemplate(WxConfig wxConfig, MessageTemplate message){
		final String body =WxJson.toJson(message);
		
		String resStr = WxActuator.execute(wxConfig, new WeixinCallback() {
			@Override
			public String callback(WxConfig wxConfig) {
				return WxMessageRequest.sendTemplate(wxConfig, body);
			}
		});

		return resStr;
	}
	
	/**
	 * 获取自动回复配置<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:26:59    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:26:59   <br>  
	 * 修改备注：     <br> 
	 * @return
	 */
	public static String getAutoreply(){
		return getAutoreply(TokenFactory.getDefaultWxConfigs());
	}
	
	/**
	 * 获取自动回复配置<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:27:07    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:27:07   <br>  
	 * 修改备注：     <br> 
	 * @param wxConfig
	 * @return
	 */
	public static String getAutoreply(WxConfig wxConfig){
		String resStr = WxActuator.execute(wxConfig, new WeixinCallback() {
			@Override
			public String callback(WxConfig wxConfig) {
				return WxMessageRequest.getAutoreply(wxConfig);
			}
		});

		return resStr;
	}
}
